package main

import (
	"errors"
	"fmt"
)

// type Student struct {
// 	string
// 	string
// 	int
// }

// type Student struct {
// 	name string
// 	age  int
// }

//	func (s Student) Study() {
//		fmt.Println("在学习")
//	}
//
//	func main() {
//		s := Student{"zhangsan", 20}
//		s.Study()
//	}
type USB interface {
	start()
	end()
}
type Mouse struct {
	name string
}

func (m Mouse) start() {
	fmt.Println(m.name, "可以开始工作了....")
}
func (m Mouse) end() {
	fmt.Println(m.name, "可以退出工作了....")
}

type FlashDisk struct {
	name string
}

func (f FlashDisk) start() {
	fmt.Println(f.name, "可以开始工作了....")
}

// func (f FlashDisk) end() {
// 	fmt.Println(f.name, "可以退出工作了....")
// }

// func main() {
// 	m1 := Mouse{"罗技"}
// 	m1.start()
// 	defer m1.end()

// 	f1 := FlashDisk{"disk"}
// 	f1.start()
// 	// defer f1.end()
// }

// func test(a interface{}) {
// 	// fmt.Println(a)
// 	fmt.Printf("%T", a)

// }

// func test(nums []interface{}) {
// 	// fmt.Println(a)
// 	// fmt.Printf("%T", a)
// 	for i := 0; i < len(nums); i++ {
// 		fmt.Println(nums[i])
// 	}
// }

// func main() {
// 	// test("string")
// 	// test(12)
// 	test([]interface{}{"lisi", "111", 222, "hi"})
// }

// type myint = int
// type myint2 int

// func main() {
// 	var n myint = 3
// 	var n2 int = n
// 	var n3 = 4
// 	n2 = n3
// 	fmt.Println(n2)
// }

// func main() {
// 	file, err := os.Open("test.txt")
// 	if err != nil {
// 		log.Fatal(err)
// 	}
// 	fmt.Println(file.Name(), "打开文件成功")
// }

// func main() {
// 	err := errors.New("test....")
// 	fmt.Println(err)
// }

func checkAge(age int) error {
	if age < 18 {
		return errors.New("年龄不合法")
	}
	return nil
}

func main() {
	err := checkAge(20)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println("测试通过")
}
